package com.swipeclose;



import android.app.Activity;
import android.os.Build;

import java.lang.reflect.Method;

public class ChangeThemeUtils {
	private ChangeThemeUtils() {
		
	}

	/**
	 * Convert a translucent themed Activity
	 * {@link android.R.attr#windowIsTranslucent} to a fullscreen opaque
	 * Activity.
	 * <p>
	 * Call this whenever the background of a translucent Activity has changed
	 * to become opaque. Doing so will allow the {@link android.view.Surface} of
	 * the Activity behind to be released.
	 * <p>
	 * This call has no effect on non-translucent activities or on activities
	 * with the {@link android.R.attr#windowIsFloating} attribute.
	 */
	public static void convertActivityFromTranslucent(Activity activity) {
		try {
			Method method = Activity.class.getDeclaredMethod("convertFromTranslucent");
			method.setAccessible(true);
			method.invoke(activity);
		} catch (Throwable t) {
		}
	}

	/**
	 * Convert a translucent themed Activity
	 * {@link android.R.attr#windowIsTranslucent} back from opaque to
	 * translucent following a call to
	 * {@link #convertActivityFromTranslucent(android.app.Activity)} .
	 * <p>
	 * Calling this allows the Activity behind this one to be seen again. Once
	 * all such Activities have been redrawn
	 * <p>
	 * This call has no effect on non-translucent activities or on activities
	 * with the {@link android.R.attr#windowIsFloating} attribute.
	 */
	public static void convertActivityToTranslucent(Activity activity) {
		if (activity == null)
			return;
		try {
			Class<?>[] t = Activity.class.getDeclaredClasses();
			Class<?> translucentConversionListenerClazz = null;
			Class<?>[] method = t;
			int len$ = t.length;
			for (int i$ = 0; i$ < len$; ++i$) {
				Class<?> clazz = method[i$];
				if (clazz.getSimpleName().contains("TranslucentConversionListener")) {
					translucentConversionListenerClazz = clazz;
					break;
				}
			}
			if (Build.VERSION.SDK_INT >= 21) {
				Class<?> ActivityOptions = Class.forName("android.app.ActivityOptions");
				Method var8 = Activity.class.getDeclaredMethod(
						"convertToTranslucent",
						translucentConversionListenerClazz, 
						ActivityOptions);
				var8.setAccessible(true);
				var8.invoke(activity, new Object[] { null, null });
			} else {
				Method var8 = Activity.class.getDeclaredMethod(
						"convertToTranslucent",
						translucentConversionListenerClazz);
				var8.setAccessible(true);
				var8.invoke(activity, new Object[] { null });
			}
		} catch (Throwable e) {
		}
	}
}
